;
; FSYS.SH Version 1.01 (C)1995,1996 HUDSON SOFT
; バックアップメモリ関連 アセンブラ用ヘッダーファイル(FSYS.SH)
;
	ifndef	_FSYS_SH_
_FSYS_SH_	equ	1

;DEV_CTRL & HND_CTRL NO
CTRL_VEC_RD	equ	0
CTRL_VEC_WT	equ	1
CTRL_NAME_RD	equ	2
CTRL_NAME_WT	equ	3
CTRL_OPT_JOB	equ	4
CTRL_IPLREAD	equ	5
CTRL_IPLWRITE	equ	6
CTRL_BPBGET	equ	7
CTRL_BPBSET	equ	8
CTRL_GETSTAT	equ	9

;open mode
O_READ		equ	$0001
O_WRITE		equ	$0002
O_APPEND	equ	$0008	;set append mode
O_CREAT		equ	$0200	;create if nonexistant
O_TRUNC		equ	$0400	;truncate to zero length
O_EXCL		equ	$0800	;error if already exists

;error trap function
IO_READ		equ	0
IO_WRITE	equ	1
IO_CHECK	equ	2
IO_CTRL		equ	3
IO_WCHECK	equ	4

;seek base
SEEK_SET	equ	0	;TOF base
SEEK_CUR	equ	1	;current base
SEEK_END	equ	2	;EOF base

;atr type
ATR_ARC		equ	$20
ATR_DIR		equ	$10
ATR_VOL		equ	$08
ATR_SYS		equ	$04
ATR_HID		equ	$02
ATR_RDO		equ	$01

;ipl block data offset
bt_jmp		equ	0
bt_oem		equ	3
bt_secsiz	equ	11
bt_clsiz	equ	13
bt_nrsvsect	equ	14
bt_nfat		equ	16
bt_dirents	equ	17
bt_maxsect	equ	19
bt_mid		equ	21
bt_fatlen	equ	22
bt_nsect	equ	24
bt_nheads	equ	26
bt_nhs		equ	28
bt_bigsect	equ	32
bt_junk		equ	36

;error code
BAD_PARA	equ	-1
BAD_DRIVE	equ	-10
PATH_OVER	equ	-11
NAME_OVER	equ	-12
EXT_OVER	equ	-13
BAD_DEVICE	equ	-14
NO_FILES	equ	-15
BAD_PATH	equ	-16
BAD_NAME	equ	-17
MOUNTED		equ	-18
UMOUNTED	equ	-19
MOUNTBUSY	equ	-20
FCB_EMPTY	equ	-21
HND_EMPTY	equ	-22
BAD_HND		equ	-23
BAD_MODE	equ	-24
SEEK_OVER	equ	-25
FSYS_DIFF	equ	-26
CUR_DIR		equ	-27
BAD_CMD		equ	-28
NOT_FMT		equ	-29
NO_MEM		equ	-30
IO_BUSY		equ	-31
FILE_EXIST	equ	-32
BAD_FAT		equ	-33
DIR_FULL	equ	-34
DISK_FULL	equ	-35
BAD_EXE		equ	-36
KEEP_PR		equ	-37
WRITE_PRO	equ	-38
NOT_RDY		equ	-39
SEC_NFND	equ	-40
CRC_ERROR	equ	-41
OVER_RUN	equ	-42

FSYS		struct
name:		ds	16
dev_call:	ds	4
dev_type:	ds	4
access_f:	ds	4
back:		ds	4
next:		ds	4
path_len:	ds	4
path:		ds	128
	align	4
		ends

FILESBF		struct
fsys_flg:	ds	4
fsysp:		ds	4
temp:		ds	64
fsize:		ds	4
ftime:		ds	4
atr:		ds	4
path:		ds	128
name:		ds	4
upath:		ds	4
name_max:	ds	4
	align	4
		ends

DPB		struct
dev_id:		ds	4
rec_offset:	ds	4
rec_sft:	ds	4
sft_byt:	ds	4
dev_call:	ds	4
ej_flg:		ds	2
secsiz:		ds	2
secsft:		ds	1
clsiz:		ds	1
clsft:		ds	1
mid:		ds	1
fattop:		ds	4
nfat:		ds	1
fatlen:		ds	1
fat_max:	ds	2
dirtop:		ds	4
dircnt:		ds	2
dirlen:		ds	2
datatop:	ds	4
free_fat:	ds	4
new_fat:	ds	2
def_fat:	ds	2
def_dir:	ds	64
	align	4
		ends

BPB		struct
secsiz:		ds	2
clsiz:		ds	1
nfat:		ds	1
nrsvsect:	ds	2
dirents:	ds	2
maxsect:	ds	2
mid:		ds	1
fatlen:		ds	1
bigsect:	ds	4
nsect:		ds	2
nheads:		ds	2
nhs:		ds	4
	align	4
		ends

	globl	fsys_init,fsys_mount,fsys_ctrl,fsys_getfsys
	globl	fsys_format,fsys_diskfree,fsys_getblocks
	globl	fsys_open,fsys_read,fsys_write,fsys_seek,fsys_htime,fsys_close
	globl	fsys_delete,fsys_rename
	globl	fsys_mkdir,fsys_rmdir,fsys_chdir,fsys_curdir
	globl	fsys_ffiles,fsys_nfiles,fsys_efiles
	globl	fsys_datetime

	globl	fsys_m_init,fsys_malloc,fsys_free,fsys_setblock

	endif	; !_FSYS_SH_
